#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7;
// 定义一个结构体
struct NODE
{
	char c;													// 字符
	int x;													// 权值
	bool operator<(const NODE &B) const { return x < B.x; } // 承载了小于号，是按照结构体的权值来进行升序的排列
} ans[N];
int a[30], len;
string s;

int main()
{
	cin >> s;
	for (int i = 0; i < 26; i++)
		a[s[i] - 'a'] = i; // 设置字母的权值。权值是基于字母在原始字符串s中的位置。例如，如果s的第一个字符是'a'，则'a'的权值为0，如果第二个字符是'b'，则'b'的权值为1，依此类推。
	cin >> s;			   // 输入待排序的字符串
	len = s.length();
	for (int i = 0; i < len; i++)
	{
		ans[i].c = s[i], ans[i].x = a[s[i] - 'a'];
	}
	sort(ans, ans + len);
	for (int i = 0; i < len; i++)
		cout << ans[i].c;
	return 0;
}